阅读更多

0顶
3踩

非技术

转载新闻 10年后编程还有意义吗?

2016-04-25 15:09 by 副主编 mengyidan1988 评论(0) 有6328人浏览
这个是Quora上提出的一个问题。随着 AI 在近年来成为热门话题,并且在 AlphaGo 自学围棋击败了人类近 10 年最好的围棋选手之后,有人开始提出这个问题。具体来说这个问题有三层意思:
1.到2025年程序员还有没有用,到那个时候所谓的“程序员”是指什么?
2.代码本身还有没有用,到那时候代码会变成什么样子?
3.机器智能会不会取代(目前意义的)代码或程序员两者的其中一个或者全部?
大家基本上倾向于认为,到 2025 年时编程仍然有意义,但有人说 2025 年以后情况可能就不是这样了。



而那些认为编码将死、程序员将失业的人的理由是机器智能会像今天的程序员一样具备自学编程的能力。比如说 AlphaGo 击败李世石就是一个机器学习能力的证据。

我们摘编了一些人的回答,也希望听听你们的看法。

Code.org CEO Hadi Partovi:

绝对的。编程不仅在 10 年内还有意义,而且还会比今天更重要。不过编程语言的语法会变得越来越简单。刚开始的时候,编程是在纸板上面打孔(可编程打孔机)。然后形式变成了这个样子:00101010101。而现在看起来更像英语。随着编程语言变得越来越像英语,这种东西学习起来会越来越容易,越来越不神秘,所以也会越来越流行。同时,随着计算机渗透到我们的日常生活里面,告诉这些设备我们想做什么,发明新的用例也会变得越来越流行。

但是在可以用自然语言跟机器进行对话并且让它们完美理解并执行从未训练过的复杂任务这些事情上我们还有很长的路要走(好几十年)。当然,一些简单的、预编程好的任务是没问题的,比如 “告诉我去加油站最近的方向。”

但是要想教计算机做从来没做过的事情,还是需要对如何跟这种特殊的计算机程序员进行沟通有特殊的理解,以及要有描述算法的计算思维。如何设计循环或条件供计算机执行任务或进行决策的语法也许会变,但底层的基础概念估计很久都不会消失。

自1999年开始就一直开发Web门户的 Christoph Richter:

Fred Brooks 1975 年的一篇文章说软件开发永远都是复杂的。虽然有一些东西可能会变容易,但核心的东西永远都不会容易。《人月神话》这本书说的就是软件工程这项核心挑战一直都难以克服—没有银弹,40 年过去了,至今情况依然如此。

Fred Brooks 1975 年的一篇文章说软件开发永远都是复杂的。虽然有一些东西可能会变容易,但核心的东西永远都是很难的。《人月神话》这本书被誉为 “软件工程的圣经”,40年过去了,那部书里面的观点仍然经得起考验。

有30年技术从业经验,曾当过工程师、产品主管、CTO、CEO的Greg Kostello 认为:

10年内编程还是有意义的,但是 20 年内还有可能性,但30年内可能性也许没有了。

在机器学习的推动下我们现在进入了软件开发的新时代。IBM 的 Watson 和 Google 的 AlphaGo 已经证明数据>算法。或者更精确地说,数据就是算法。但是现在你需要非常特殊的技能才能开发出机器学习解决方案。工程师和数据科学家仍然需要对机器学习算法进行编程,但最终同样的系统会教它们学会如何通过分析自己的代码来改进自己。

未来 10 年对软件工程师的需求还会更强劲,因为初创企业和大公司都把精力聚焦在把算法驱动应用转为数据驱动应用上。通过固定算法来处理信息安全已经太复杂了,需要机器学习即时学习并挫败新的攻击。当然,像无人车这样的计划已经在尝试这方面的努力。Google 无人车到处转悠是因为它们需要收集数据来帮助系统学习。但这需要软件工程师和数据科学家一起协作来设计收集数据的系统。他们是这种新办法的先驱。

所以在近期对懂机器学习、知道利用大数据、传感器数据以及视觉和语音的软件工程师的需求会非常旺盛。如果你能够及时调整自己的技能的话,你的职业生涯并无近忧。

中期的情况略为模糊一点。从汇编语言、编译语言到脚本语言,软件每阶段的重新调整都会导致对程序员需求的增加。有点脑子懂基本编程技能的人都能找到工作。但新的工作需要不同的技能集。如果你在设计 AI 系统,高等数学是必要条件之一。如果你用 AI 系统,理解如何有效利用数据就很重要。像 IBM、微软和 Google 这样的公司都在设法让这些系统对并不掌握那些技能的程序员来说更容易使用,这就导致了近期内变成工作岗位的爆发。而且由于现在产品设计师可以从更高的层次解决问题,制定智能解决方案,可以完成的事情的范围将会扩大。但是,那些技能不是入门级的。如果你对抽象思维和跟数据打交道不熟,那你的工作就跟无人车变得无所不在之后的 Uber 司机岗位一样岌岌可危。

从长期来看,应用会自己写自己。问题是,应用设计是由可最大发挥 AI 系统效能(因为理解问题解决机制)的程序员来做还是由不编程但擅长描述待解决问题的产品设计师来做,还是会涉及到其他技能?这个我还看不清楚。

John Brothers,有20年以上经验的软件开发者和架构师:

到 2025 年我们不仅还需要软件开发者,而且我觉得到时候软件开发可能还会成为地球上面最后一项 “有用” 的工作。当然,“开发驱动机器人的软件” 是未来这种工作的一部分。

随着时间的推移,我们发现可以有越来越多的方式来用软件替代过去的脑力劳动。认为这种现象未来会停止出现是没有理由的。

反对者可能会说:“你怎么能设计一个程序来替代脑外科医生呢?” 我的回答是:“不知道。但你知道什么事情比脑外科手术更难吗?创建一套可捕捉脑科手术涉及的所有关键决策、启发试探法以及算法的逻辑模型。” 换句话说,很多任务 double 很难,但是在软件中捕捉那些任务更难。只要想想你就会发现只要有难度的任务要进行自动化,就会有软件开发者去进行尝试。比方说,地球上最后一项工作的自动化(注:这可真是程序员的自杀式工作啊)。

有人可能会说:“未来只要有合适的工具,编程应该是很容易的事情。” 知道我怎么想吗?我想为你祈祷。

以为编程可以做得很简单的看法实际上非常目光短浅。他们的依据大概是这样的:“X 类问题很容易建模。因为,任何人只要有合适的指导,都能利用软件对该问题建模。”

对于特定类型的问题来说也许是可以的。但是软件开发有趣的地方在于我们在不断制造新的问题类型,我们制造问题的速度跟找到老问题的自动化解决方案的速度一样快(如果说不是更快的话)。

深度学习和量子计算机都是我们推进软件潜力的例子,这些东西在 20 年前我们还只能想象。而那只是其中两个而已—我们今天教计算机做的各种事情在过去都只能靠想象。没有理由认为这种情况会很快停止出现。我们在扩大用软件可以做的事情的领域,这种扩张的速度要比我们自动化现有流程的速度要快。这种情况还将持续几十年。

自1978年就开始编程的Steve Traugott:

2025 年编程当然还有用,而且作用可能还更大。

我的观点可能会孤立无援,这里我补充一些事情希望能有助于说明观点。至少有一门语言到 2025 年会发挥更大作用,到了 2050 年这门语言可能还会被重度使用,甚至到 2100 年还会存在。鉴于其部署方式,Javascript 本身几乎已经成为了互联网协议,web 浏览器对它的支持不但是必须而且看起来是没有限期的。只要它还有浏览器支持,web 网站就会继续使用它,导致了对兼容性期望无休止的循环。唯一有可能打破这一循环的是 web 不用了。这样的事情是不大可能会发生的。

不管你喜不喜欢,事实上 Javascript 已经成为了 web 的汇编语言。

剩下的唯一问题是开发者什么时候从编写原生 Javascript 转到写其他可编译为 javascript 的语言?怎么转?(类似于过去几十年从机器语言转为汇编语言最后再转为 C 的趋势)

从 JavaScript 转到其他编译语言的运动实际上已经在进行当中,但是更高级的代码还是要靠手工编写(注:所谓由 AI 编写代码所以不需要人写其实是个伪命题,其实人向 AI 引擎描述问题还是通过编码来完成的,比方说类似 prolog、lisp 或别的特定领域语言),仍然需要编译为 JavaScript 才能在浏览器执行。同时鉴于 JavaScript 引擎还需要保留,所以我认为在几十年内我们还会看到可怕的、嵌套的、手工编码的匿名 JavaScript 函数一直存在。JavaScript 已经变成了另一个 COBOL,只是可读性更差但部署范围更广。

我们可以拿 B-52 轰炸机来对比一下。这款 90 年前设计的轰炸机预计还将服役到 2040 年。C 语言的历史也有 45 年了。

绝对如此!我只能想象编程会变得越来越重要。关于编程的本质 Edsgar Dijkstra 有一条名言:

(软件危机的)主要原因在于机器已经强大了好几个量级!坦率地说,只要没有机器,编程根本不成问题;当我们只有比较弱的计算机时,编程的问题不大,现在我们有了庞大的计算机,编程的问题也变得一样大了。从这个意义上来说电子业一个问题都没有解决,反而是制造了如何使用其产品的问题。

对此我的思考是人类文明对代码的依赖程度有多大。我们的世界已经有那么多的东西是由编程驱动的(软件蚕食世界)。从这个意义上来说,我们已经制造了维护软件的问题,这意味着我们永远都需要更多的程序员。但随着计算变得越来越强大,我们写的软件也会变得越来越强大,从而形成一个需求的良性循环。只要我们需要软件,我们就会需要程序员。所以 2025 年是编码不仅还有用,而且还会更加重要。我认为所有对未来 10 年程序员的需求数量的估算都是小了。软件蚕食世界,所有能生存的公司都将是技术公司。我们还看到程序员类型的多样化,从数据科学到虚拟现实,全新的编程领域正在不断涌现,这种趋势为什么会停止呢?

此外,我还认为代码是一种媒介而不仅仅是一项工作,它是人类这个物种的一种沟通的新方式。我们对这个世界的问题和现象用代码来建模。从这个意义来说,编码跟表达关系更大。而我们永远都不会停止用这种方式表达自己。所以我认为我们使用代码的方式会越来越丰富—会超出软件这个行当进入到学习的每一个领域。我想在 25 年内我们教数学、化学、生物、物理、几何以及大部分的 STEM 课程都将通过代码来完成。那时候我们学编程未必是为了写应用,而是为了在软件领域以外表达想法。代码是信息时代的通用语,我看这一点近期内不会有任何改变。

研发软件工程师Lakshmi Narasimhan Ramakrishnan:

简答:是的!但不是今天的样子。

从机器语言、到面向对象语言,编程的演进历史就是不断地抽象。这一路上我们还在操作系统的作用下得以开发出更好的基础设施。大家很快意识到自己可以在这些基础设施之上编写出更复杂的程序,然后继续开发出更复杂的软件架构。

然后有了互联网(也是基于软件协议开发的),这个东西使得对地球另一端的计算机进行编程 / 沟通成为了可能。互联网起到了一个强大的基础设施的作用,围绕着它开发出了许多的软件,在今天,我们把云视为一台庞大的计算机(接入互联网运行分布式操作系统的计算机子集)。

过去几年机器学习和人工智能成为了一个热门话题。其中的出现的一个误解是 AI 会发展到不需要人来编程的地步。这是不对的。我的观点是 AI 能发展到做出比人更好的决策(尤其在问题搜索空间庞大的情况下)。比如 Google 的 AlphaGo 就是证据之一。我会吧 AI 看做建设更复杂基础设施的工具。而这反过来又会帮助我们开发出更好的软件。

我的意思是说,这是一个恶性循环。软件演进然偶帮助我们创建出更强大的基础设施进而引领我们走向更高层次的抽象,反过来又让我们做出比今天更复杂的软件,如此周而复始。所以编程始终都是有重要意义的,但是抽象和你试图用代码解决的问题会不断发生快速演变。(注:这个观点跟英国量子物理学家戴维·多伊奇的《无穷的开始:世界进步的本源》有些类似,尽管现象亘古不变,但我们始终都在寻找好的解释)

来自:36Kr
  • 大小: 40.8 KB
来自: 36Kr
0
3
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 编程的意义何在?

    但是心中渐渐有一种想法,编程在未来的10年20年内,将会成为每个现代人必备的技能。就像用键盘打字一样,放到90年代,没几个人会。但是到了当下,几乎每个现代年轻人都会。 编程在未来会逐步走向日常生活中。 突然...

  • 学编程要考证么?我考了 6 个!

    学编程要考证么?聊聊我的经历和看法 大家好,我是鱼皮,有个朋友们一直很关心的问题:学编程到底要不要考证? 今天就结合我的个人考证经历,聊聊我的看法。 本文大纲: 考证经历 大学期间,我总共考了 6 个和编程...

  • 自学编程的 6 个致命误区

    本篇文章来和大家聊聊自学编程中的一些误区——这是我在 B 站上看了羊哥的一期视频后有感而发的文章。因为确实有很多读者也曾私信问过我这些方面的问题,很有代表性,所以我就结合自己的亲身体会来谈一谈,希望对小...

  • 一百年后,人类怎样编程?

    黑客与画家 很难预测一百年后的人类生活,只有少数几件事是可以确定的。那时,汽车将具备低空飞行能力,城市规划的法规将放宽,大楼可以造到几百层,大街上一天到晚看不见太阳,女性个个都学过防身术。本文只想讨论...

  • 你真的理解函数式编程吗?

    大数据以及人工智能越来越流程,你是否可以轻松适应大数据编程,函数式编程在其中起着重要作用,如何从面向对象编程跳槽到函数式编程?你是否觉得函数式各种概念难于理解?本场 Chat 将为你解答。我将为你分享亲身...

  • 程序员入门编程,看这10本书,少走10年弯路

    本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值...

  • 你真的理解【函数式编程】吗?

    本文来自作者 李龙生 在 GitChat 上分享「你真的理解函数式编程吗?」,「阅读原文」查看交流实录 「文末高能」 编辑 | 克拉克 前言 现在机器学习、人工智能的发展趋势如火如萘,很多培训班也在...

  • DeepMind带来了大魔王阿尔法扣,程序员还有前途吗?

    最近著名的编程竞赛网站Codeforces发布了一篇名为《AlphaCode(DeepMind) Solves Programming Problems on CodeForce》的文章,将阿尔法扣(AlphaCode)带入人们的视野,更让DeepMind再次霸榜各大媒体的头条,这也是...

  • 编程语言TOP10!该如何选择适合自己的?

    全文共3677字,预计学习时长10分钟图源:unsplash编程领域大约有700种代码语言。理解编程语言的重要性以及其如何影响需要执行的具体任务至关重要。一篇文章穷尽700 种语言不现实...

  • C/C++编程工具及实用小软件推荐

    大家可能还用过Dev C++这个开发环境,但这个工具原厂商已经停止维护,目前还有几个国内维护的版本,但该工具整体功能有限,并且对Win10、Win11等新版本Windows系统的兼容性不太好,所以不推荐大家使用。 2.1、...

  • 计算机编程入门先学什么最好?

    我们不妨换个角度,站在更高一层来看这个问题「计算机编程入门先学什么最好?」计算机入门最应该学的是 Linux,而非任何的编程语言。这篇文章4600字,有点长,如果你能耐心看完,或许会给你带来更多的思考。1. 为...

  • Go是更好的编程语言吗?

    作者 |码砖杂役,淘宝技术部高级技术专家第一次接触GO是5年前,14年4月份,也是在我司,全职钻研一周,彼时C++中毒太深,内心排斥其他编程语言,看其他语法总觉得有点怪...

  • 小孩学python有意义吗-让中小学生学习编程有什么意义

    让中小学生学习编程有什么意义?1.中小学生为什么要学习编程?首先,未来社会,随着信息技术和人工智能的发展,越来越多行业的工作离不开编程。美国前总统奥巴马就呼吁:"如果我们想让美国保持地位,就需要年轻...

  • 你的编程能力从什么时候开始突飞猛进?

    本人在大学之前从未接触过编程,最开始的编程学习还是在高考完后,从书店买了本C Primer Plus,然后暑假开始啃,前前后后也就看了几十页。大一上的时候,来到了华中师范大学,还没有转专业到计算机,一直在自学C语言...

  • C++没落了?学习C++没有前途了?从业者给你揭晓答案

    虽然近些年受到了Java及Go、Rust等新兴语言的冲击,但其仍然保持着旺盛的生命力,牢牢占据着世界编程语言排行榜的前几位。 C和C++在执行效率上是最接近汇编语言的高级编程语言,在许多对代码执行效率有很高要求的...

  • 【编程实践】编程语言之 Smalltalk

    Smalltalk,被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境(IDE)。Smalltalk由艾伦·凯,Dan Ingalls...90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。

  • 10条编程好习惯

    给IT入门加星标,提升编程技能培养良好编程习惯,形成专业的风格和极致的治学态度,是一名优秀的开发人员会考虑的问题。在追求卓越的过程中,这些习惯都会积累下来,形成人生道路上优秀的修养和品质...

  • 史上最全的LED点灯程序,你都掌握了吗?

    真正意义上的第一颗FPGA芯片XC2064为Xilinx所发明,这个时间差不多比著名的摩尔定律晚20年左右,但是FPGA一经发明,后续的发展速度之快,超出大多数人的想象。 计数器是在FPGA设计中最常用的一种时序逻辑电路,根据...

  • 编程知识如何分类呢?

    分类一:知乎萧大的分类  编程知识的金字塔底部有三个关键的部分: 算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个 maxSoFar 变量,之后对于每个数… 语法:我怎样用某种编程语言表达这些算法,...

  • 编程的思想是什么,如何建立编程思想,如何训练和提高编程思想?

    首先,什么是编程思想? 编程思想是一种指导思想,这个指导思想,将会诱发你如何写代码的行为。 如果理解这话的意思呢?打个比方,中华文明千百年在民众心中形成了一个“统一天下”的思想,这种思想会诱发各个混乱...

Global site tag (gtag.js) - Google Analytics